//登陆访问控制

// 功能：1.登录了允许访问
// 2.未登录跳转登陆页面

//AuthRoute鉴权路由用法与Route用法完全一致可以减少学习成本

// 注意：AuthRoute组件可以决定是否渲染component组件，所以需要对component属性进行处理
// Redirect 组件 重定向，也就是路由跳转组件
import { Redirect, Route } from 'react-router-dom'
import { isAuth } from '../../utils'

const AuthRoute = ({ component:Comp, ...rest }) => {
  // const Comp = component
  return (
    <Route
      {...rest}
      render={(props) => {
        //判断是否登录
        const isLogin = isAuth()
        if (isLogin) {
          //登录，允许访问
          return <Comp {...props}/>
        } else {
          //未登录，跳转登录页
          //注意：push方法的第二个参数就是state 所以可以直接传递对象，不需要在嵌套一个state
          props.history.push('/login',{from:props.location.pathname})


          //更符合render方法的语义
          // state  路由跳转携带额外数据


          // return <Redirect to={{pathname:'/login',state:{from:props.location.pathname}}}/>
        }
      }}
    />
  )
}
export { AuthRoute }
